package com.theorydance.esoperator.utils;

import java.util.Random;

/**
 * 密码以及加密等相关工具类
 * 信息摘要算法：MD5, SHA, 信息摘要是安全的单向哈希函数，它接收任意大小的数据，并输出固定长度的哈希值。
 * @author TheoryDance
 */
public class SecretUtil {

	
	/**
	 * 生成随机密码生成方式一
	 * 密码字典 -> 随机获取字符
	 * @param passwordLength 生成密码长度
	 * @return
	 */
	public static String randomPasswordOne(int passwordLength) {
		int i; // 生成的随机数
		int count = 0; // 生成的密码的长度

		// 密码字典
		char[] str = {
				'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
				'V', 'W', 'X', 'Y', 'Z',
				'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
				'v', 'w', 'x', 'y', 'z',
				'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
				'~', '!', '@', '#', '$', '%', '^', '-', '+'
//				'!', '@', '#', '%', '?'
		};

		StringBuffer stringBuffer = new StringBuffer("");
		Random r = new Random();
		
		// 针对密码的第一位，要求不能为特殊字符
		i = r.nextInt(62);
		stringBuffer.append(str[i]);
		count++;
		
		// 针对第2位开始进行随机生成
		while (count < passwordLength) {
			// 生成 0 ~ 密码字典-1之间的随机数
			i = r.nextInt(str.length);
			stringBuffer.append(str[i]);
			count++;
		}

		return stringBuffer.toString();
	}
}
